#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include "IO_irq_test.h"

int main()
{
	int IO_irqtest;
	int code,i;
	unsigned int current_status;
	char input=0 ;
	unsigned char buffer[512]={0};
	
	if ((IO_irqtest = open("/dev/IO_irq",O_RDONLY ))<0) 
		{printf("open IO_irq error!\n"); 
		exit(1);
		}

	if ( lseek(IO_irqtest,0,SEEK_SET) == -1) printf("IO_irq: the module can not lseek!\n");

	for ( ; input != 'q' ; getchar()) 	{
		
		printf("please input the command :");
		input= getchar();
		switch(input) {

#if 1
	case '1':
		if ((code=ioctl( IO_irqtest , IO_IRQ_1  , NULL ) ) < 0) 
			printf("IO_irq: ioctl IO_IRQ_1 error! code=%d \n",code);
		else   printf("IO_irq: ioctl IO_IRQ_1 ok!  \n");
		break;
	case '2':
		if ((code=ioctl( IO_irqtest , IO_IRQ_2  , NULL ) ) < 0) 
			printf("IO_irq: ioctl IO_IRQ_2 error! code=%d \n",code);
		else   printf("IO_irq: ioctl IO_IRQ_2 ok!  \n");
		break;
	case '3':
		if ((code=ioctl( IO_irqtest , IO_IRQ_3  , NULL ) ) < 0) 
			printf("IO_irq: ioctl IO_IRQ_3 error! code=%d \n",code);
		else   printf("IO_irq: ioctl IO_IRQ_3 ok!  \n");
		break;
	case '4':
		if ((code=ioctl( IO_irqtest , IO_IRQ_4  , NULL ) ) < 0) 
			printf("IO_irq: ioctl IO_IRQ_4 error! code=%d \n",code);
		else   printf("IO_irq: ioctl IO_IRQ_4 ok! \n");
		break;

	 case '5':
		if ((code=ioctl( IO_irqtest , IO_IRQ_ALL  , NULL ) ) < 0) 
			printf("IO_irq: ioctl IO_IRQ_ALL error! code=%d \n",code);
		else   printf("IO_irq: ioctl IO_IRQ_ALL ok! \n");
		break;
	case '6':
		if ((code=ioctl( IO_irqtest , IO_KFIFO_SIZE  , NULL ) ) < 0) 
			printf("IO_irq: ioctl IO_KFIFO_SIZE error! code=%d \n",code);
		else   printf("IO_irq: ioctl IO_KFIFO_SIZE ok! len=%d \n",code);
		break;

	 case '7':
		if ((code=ioctl( IO_irqtest , IO_KFIFO_RESET  , NULL ) ) < 0) 
			printf("IO_irq: ioctl IO_KFIFO_RESET error! code=%d \n",code);
		else   printf("IO_irq: ioctl IO_KFIFO_RESET ok! \n");
		break;
	 case '8':
		if ((code=read( IO_irqtest , buffer  , 512 ) ) < 0) 
			printf("IO_irq: read error! code=%d \n",code);
		else   	for(i=0; i<code; i++) printf("%c",buffer[i]);
				
		break;
#endif
	case 'q':
		break;

	 default:  /* redundant, as cmd was checked against MAXNR */
		printf("IO_irq:  Invalid input ! only 1、2、3、4、5、6、7、8、q !\n");
	}
}	
	close(IO_irqtest);
 
 exit(0);
}
